package com.hyt.it.ogt.ks.model.vo;

import java.time.LocalDateTime;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.hyt.core.ModelSerializable;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
@Builder
@ToString
@ApiModel(value = "登录-考生信息")
public class CandidateInfoVO implements ModelSerializable {

    private static final long serialVersionUID = 7742290198656016802L;
    @ApiModelProperty(value = "考试ID")
    private String examId;

    @ApiModelProperty(value = "考生ID")
    private String candidateId;

    @ApiModelProperty(value = "试卷ID")
    private String paperId;

    @ApiModelProperty(value = "准考证号")
    private String admissionNumber;

    @ApiModelProperty(value = "是否强制收卷，1表示是，0表示否")
    private Boolean forbidEndExam;

    @ApiModelProperty(value = "判分状态，1已判分，0待判分")
    private Boolean judgeScoreState;

    /**
     *  必须与CandidateStatusCode定义值一致
     */
    @ApiModelProperty(value = " 考生状态，0未开考；10：已登录；20：已开考；21:中断；30：已交卷/已完成；40：缺考")
    private Integer state;

    @ApiModelProperty(value = " 考生登录状态，0未登录，1：已登录")
    private Integer loginState;

    @ApiModelProperty(value = "考试状态，0考试未开始，1考试进行中，2考试结束，3早于提前开考分钟数，4超过迟到分钟")
    private Integer examState;

    @ApiModelProperty(value = "考生考试实际开始时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss" , timezone="GMT+8")
    private LocalDateTime examBeginDate;

    @ApiModelProperty(value = "考生考试实际结束时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss" , timezone="GMT+8")
    private LocalDateTime examEndDate;

    @ApiModelProperty(value = "剩余时长")
    private Integer remainderDate;
    
    @ApiModelProperty(value = "可提前***分钟登录")
    private Integer earlyLogOnMins;
    
    @ApiModelProperty(value = "开始考试后***分钟不能登录")
    private Integer delayLogOnMins;
    
    @ApiModelProperty(value = "视频监控")
    private Boolean videoMonitoring;

    @ApiModelProperty(value = "密号")
    private String passwordNumber;

    @ApiModelProperty(value = "机构转发标识")
    private String officeRouteFlag;

    @ApiModelProperty(value = "是否需要第二次验人脸证")
    private Boolean secondLogin = Boolean.FALSE;
}
